/*
 * ListaEnlazada.h
 *
 *  Created on: Apr 29, 2012
 *      Author: Nico
 */

#include "Nodo.cpp"
#include "Iterador.cpp"

template <class Generic>
class ListaEnlazada{
	
	protected:
		/* Atributos protegidos */
		Nodo<Generic>* prox;
		unsigned int   length;
		
		/* Metodos protegidos */
		// Devuelve el ultimo nodo
		Nodo<Generic>* _last_nodo();
		
		// Igual que index, solo que devuelve el nodo en vez del dato
		int _index_nodo(int index , Nodo<Generic>** unNodo);
		
	public:
		ListaEnlazada();
		~ListaEnlazada();
		unsigned int get_length();
		void print();
		void print_full();
		
		int append(Generic);
		int index(int index , Generic &value);
		int deleteIndex(int index);
		int set(int index , Generic newValue);

		Iterador<Generic>* get_iterador();
};
